define(["jquery", "bootstrap", "backend", "table", "form"], function ($, undefined, Backend, Table, Form) {
  var Controller = {
    index: function () {
      $(document).ready(function () {
        // var data = {
        //   住院患者实际占用床日数: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        // };

        // 定义数据对象
        var tableData = {
          住院患者实际占用床日数: Array(32).fill("-"), // 填充30个1
          新入院患者总数: Array(32).fill("-"), // 填充30个2
          白班责任护士数: Array(32).fill("-"),
          白班护理患者数: Array(32).fill("-"),
          夜班责任护士数: Array(32).fill("-"),
          夜班护理患者数: Array(32).fill("-"),
          护士上班小时数: Array(32).fill("-"),
          导尿管留置日数: Array(32).fill("-"),
          胃肠管留置日数: Array(32).fill("-"),
          气管导管留置日数: Array(32).fill("-"),
          CVC留置日数: Array(32).fill("-"),
          PICC留置日数: Array(32).fill("-"),
          身体约束日数: Array(32).fill("-"),
          特级护理患者占用床日数: Array(32).fill("-"),
          一级护理患者占用床日数: Array(32).fill("-"),
          二级护理患者占用床日数: Array(32).fill("-"),
          三级护理患者占用床日数: Array(32).fill("-"),
        };

        var tableDataInit = JSON.parse(JSON.stringify(tableData));
        // 初始渲染表格
        renderTable();

        //确定 按钮 #query-btn 点击事件 ajax 请求数据
        $("#area-btn").on("click", function (event) {
          event.preventDefault(); // 阻止表单的默认提交行为
          var department = $("#department-select").val();
          var date_select = $("#date-select").val();
          console.log("department:", department);
          console.log("date-select:", date_select);

          // 判断start_time是否为空, 为空则提示
          if (date_select == "") {
            layer.alert("请选择月份", { icon: 2, time: 3000 });
            return false;
          }

          // ajax 请求数据
          $.ajax({
            url: "fssy/areasensitivityount/getAreaMonthData",
            type: "POST",
            data: {
              department, // 科室
              date_select, // 季度
            },
            success: function (res) {
              console.log("success = ", res);

              if (res.msg === "OK") {
                layer.alert("查询成功", { icon: 1 });
              } else {
                layer.alert("查询失败", { icon: 2 });
                return;
              }

              // 表格数据初始化
              tableData = JSON.parse(JSON.stringify(tableDataInit));

              // 更新表格数据
              // tableData["住院患者实际占用床日数"] = res.data.住院患者实际占用床日数 || Array(32).fill(88);
              res = res.data;
              res.forEach((item, index) => {
                tableData.住院患者实际占用床日数[item.updateDay - 1] = item.actual_bed_days;
                tableData.新入院患者总数[item.updateDay - 1] = item.new_admissions_count;
                tableData.白班责任护士数[item.updateDay - 1] = item.day_shift_nurses;
                tableData.白班护理患者数[item.updateDay - 1] = item.day_shift_patients;
                tableData.夜班责任护士数[item.updateDay - 1] = item.night_shift_nurses;
                tableData.夜班护理患者数[item.updateDay - 1] = item.night_shift_patients;
                tableData.护士上班小时数[item.updateDay - 1] = item.nurse_work_hours;
                tableData.导尿管留置日数[item.updateDay - 1] = item.catheter_days;
                tableData.胃肠管留置日数[item.updateDay - 1] = item.astro_tube_days;
                tableData.气管导管留置日数[item.updateDay - 1] = item.trachea_tube_days;
                tableData.CVC留置日数[item.updateDay - 1] = item.cvc_days;
                tableData.PICC留置日数[item.updateDay - 1] = item.picc_days;
                tableData.身体约束日数[item.updateDay - 1] = item.restraint_days;
                tableData.特级护理患者占用床日数[item.updateDay - 1] = item.special_care_bed_days;
                tableData.一级护理患者占用床日数[item.updateDay - 1] = item.level_1_bed_days;
                tableData.二级护理患者占用床日数[item.updateDay - 1] = item.level_2_bed_days;
                tableData.三级护理患者占用床日数[item.updateDay - 1] = item.level_3_bed_days;
              });

              // console.log("tableData = ", tableData);
              // 遍历 tableData 对象中的值
              Object.values(tableData).forEach((itemArr) => {
                itemArr[itemArr.length - 1] = "-"; // 最后一项填充 "-"
                let itemSum = 0;
                itemArr.forEach((cell) => {
                  cell !== "-" ? (itemSum += parseInt(cell)) : 0;
                });
                // 把itemSum 添加到itemArr的最后一项
                itemArr[itemArr.length - 1] = itemSum;
              });

              // 重新渲染表格
              renderTable();
            },
            error: function (jqXHR, textStatus, errorThrown) {
              console.log(textStatus, errorThrown);
            },
          });
        });

        // 动态渲染表格函数
        function renderTable() {
          var tbody = $("#areaTable tbody");
          tbody.empty(); // 清空表格内容
          var rowIndex = 0; // 定义行索引
          $.each(tableData, function (key, value) {
            // 创建表格行
            var row = $("<tr>");
            // 判断是否是偶数行（从 0 开始计数）
            if (rowIndex % 2 === 1) {
              // 奇数索引对应表格中的偶数行
              row.addClass("info"); // 添加样式类
            }
            // 添加第一列（项目名称）
            row.append("<td class='text-left'>" + key + "</td>");
            // // 添加其余列（数据）
            // value.forEach(function (cellData) {
            //   row.append("<td class='text-center'>" + cellData + "</td>");
            // });
            // 添加其余列（数据）
            value.forEach(function (cellData, cellIndex) {
              if (cellIndex === value.length - 1) {
                // 如果是最后一列，添加 class="warning"
                row.append("<td class='text-center warning' style='font-weight:bold;'>" + cellData + "</td>");
              } else {
                row.append("<td class='text-center'>" + cellData + "</td>");
              }
            });
            // 将行添加到表格的 tbody
            tbody.append(row);
            rowIndex++; // 增加行索引
          });
        }

        $("#test-btn").on("click", function (event) {
          event.preventDefault(); // 阻止表单的默认提交行为
          // ajax 请求数据
          $.ajax({
            url: "fssy/areasensitivityount/test",
            type: "POST",
            data: {},
            success: function (res) {
              console.log("success = ", res);
            },
            error: function (jqXHR, textStatus, errorThrown) {
              console.log(textStatus, errorThrown);
            },
          });
        });
      });
    },

    add: function () {
      Controller.api.bindevent();
    },

    edit: function () {
      Controller.api.bindevent();
    },

    api: {
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      },
    },
  };
  return Controller;
});
